package cn.iocoder.yudao.module.wine.service.agreement;

import javax.validation.*;
import cn.iocoder.yudao.module.wine.controller.admin.agreement.vo.*;
import cn.iocoder.yudao.module.wine.dal.dataobject.agreement.AgreementDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 协议配置 Service 接口
 *
 * @author 管理员
 */
public interface AgreementService {

    /**
     * 创建协议配置
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createAgreement(@Valid AgreementSaveReqVO createReqVO);

    /**
     * 更新协议配置
     *
     * @param updateReqVO 更新信息
     */
    void updateAgreement(@Valid AgreementSaveReqVO updateReqVO);

    /**
     * 删除协议配置
     *
     * @param id 编号
     */
    void deleteAgreement(Long id);

    /**
     * 获得协议配置
     *
     * @param id 编号
     * @return 协议配置
     */
    AgreementDO getAgreement(Long id);

    /**
     * 获得协议配置分页
     *
     * @param pageReqVO 分页查询
     * @return 协议配置分页
     */
    PageResult<AgreementDO> getAgreementPage(AgreementPageReqVO pageReqVO);

    /**
     * 获取供求协议
     * @return
     */
    AgreementDO getSupplyAgreement();

    /**
     * 获取注册协议
     * @return
     */
    AgreementDO getRegisterAgreement();

    /**
     * 获取vip协议
     * @return
     */
    AgreementDO getVipAgreement();

    AgreementDO getPosterAgreement();

    AgreementDO appGetAgreement(Integer type);
}
